package com.shujia.scala

import scala.io.Source

object Demo23ScalaImplicit3 {
  def main(args: Array[String]): Unit = {
    // 3、隐式转换类
    // 动态的给 同类中构造方法需要的参数类型 一样的变量 加上该类中的方法
    // 读取students.txt
    //    Source.fromFile("data/students.txt")
    //      .getLines()
    //      .foreach(println)

    // 读取score.txt
    //    Source.fromFile("data/score.txt")
    //      .getLines()
    //      .foreach(println)

    // 使用ReadFile类
    //    new ReadFile("data/students.txt").read().foreach(println)
    //    new ReadFile("data/score.txt").read().foreach(println)

    // 在class前加上implicit关键字
    // 直接使用字符串就可以调用 ReadFile类中的方法了
    // 相当于给 字符串类型加上了 ReadFile类中的方法
    "data/students.txt".read().foreach(println)
    "data/score.txt".read().foreach(println)


  }

  // 定义了一个类 支持传入一个路径path 有一个方法read()可以调用 会根据path读取文件并返回一个迭代器
  implicit class ReadFile(path: String) {
    def read() = {
      val itr: Iterator[String] = Source.fromFile(path)
        .getLines()
      itr
    }
  }

}
